#include "graph.h"
#include<bits/stdc++.h>
using namespace std;
const int maxn=205;
vector<pair<int,int>> tree[maxn];
int tot,now,deg[maxn],dep[maxn],maxdep,dis[maxn][maxn],cnt;
int sum[maxn];
pair<int,int> fa[maxn]; 
int ans[maxn][maxn],vis[maxn];
int tmp[maxn],tott,w[maxn][maxn];
void dfs(int cur,int f)
{
	deg[cur]=NumberOfRoads();
	fa[cur]={f,LastRoad()},dep[cur]=dep[f]+1;
	maxdep=max(maxdep,dep[cur]);
	for(int i=1;i<=deg[cur];i++)
	{
		if(i==fa[cur].second) continue;
		// cout<<cur<<" "<<deg[cur]<<"\n";
		Move(i,2);
		int nowc=Color();
		if(nowc!=1){ans[cur][i]=-(nowc==3);Move(LastRoad(),nowc);continue;}
		++tot,tree[cur].push_back({tot,i}),dfs(tot,cur);
	}
	if(cur!=1) Move(fa[cur].second,3);
}
void dfs2(int cur,int k)
{
	int curc=2+((dep[cur]/k)%3);
	if(curc==4) curc=1;
	tmp[dep[cur]]=cur;
	for(int i=1;i<=dep[cur];i++) w[cur][i]=tmp[i];
	memset(vis,0,sizeof(vis));
	vis[fa[cur].second]=1;
	for(int i=0;i<tree[cur].size();i++) vis[tree[cur][i].second]=1;
	if(dep[cur]>k)
	{
		for(int i=1;i<=deg[cur];i++)
		{
			if(vis[i]==1||ans[cur][i]==-1) continue;
			if(ans[cur][i]+k>=dep[cur]) continue;
			Move(i,curc),cnt++;
			if(Color()==3) ans[cur][i]+=k;
			if(Color()==1) ans[cur][i]+=2*k;
			Move(LastRoad(),Color()),cnt++;
		}
	}
	for(int i=0;i<tree[cur].size();i++)
	{
		dis[cur][tree[cur][i].first]=dis[tree[cur][i].first][cur]=1;
		Move(tree[cur][i].second,curc),cnt++,dfs2(tree[cur][i].first,k);
	}
	if(cur!=1) Move(fa[cur].second,2),cnt++;
}
void Inspect(int R)
{
	now=tot=1;
	dfs(now,-1);
	for(int i=1;i<=tot;i++)
		for(int j=1;j<=tot;j++) dis[i][j]=1e9;
	for(int i=1;i<=tot;i*=3) dfs2(now,i);
	for(int i=1;i<=tot;i++)
		for(int k=1;k<=deg[i];k++)
			if(ans[i][k]>0) dis[i][w[i][ans[i][k]]]=dis[w[i][ans[i][k]]][i]=1;
	int S=0;
	for(int i=1;i<=tot;i++)
		for(int j=i+1;j<=tot;j++) if(dis[i][j]==1) S++;
	for(int k=1;k<=tot;k++)
		for(int i=1;i<=tot;i++)
			for(int j=1;j<=tot;j++) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
	for(int i=1;i<=tot;i++)
		for(int j=i+1;j<=tot;j++) sum[dis[i][j]]++;
	for(int i=1;i<=R;i++) Answer(i,sum[i]);
}

